import {SearchButtonDto, SearchDataSourceDto} from "@/api/sheet/platform/list/types";
import {SheetFormCheckVO} from "@/api/sheet/sheetFormCheck/types";
import {SheetSelectVO} from "@/api/sheet/sheetSelect/types";
import {SheetFormAttachmentVO} from "@/api/sheet/sheetFormAttachment/types";
import {SheetVO} from "@/api/sheet/sheet/types";

/**
 * 应用表单详情DTO
 */
export interface SheetFormInfoDto {
  tabList: TabDto[];
  formInfoList: FormInfoDto[];
  formCheckList: FormCheckDto[];
  formDataList: FormDataDto[];
}

/**
 * 页签信息
 */
export interface TabDto {

  /**
   * 页签名称
   */
  tabName: string;

  /**
   * 表单ID
   */
  formIdList: [];

}

/**
 * 表单信息
 */
export interface FormInfoDto {

  /**
   * 表单ID
   */
  formId: string | number;

  /**
   * 表单名称
   */
  formName: string;

  /**
   * 显示方式【1：表单】【2：列表】
   */
  showType: number;

  /**
   * 是否子表单【1：是】【0：否】
   */
  isChild: number;

  /**
   * 表单字段分组
   */
  groupList: FormInfoGroupDto[];

  /**
   * 按钮信息
   */
  buttonList: SearchButtonDto[];

  /**
   * 应用信息
   */
  sheet: SheetVO;
}

/**
 * 表单信息分组
 */
export interface FormInfoGroupDto {

  /**
   * 分组名称
   */
  groupName: string;

  /**
   * 字段信息
   */
  formFieldList: FormFieldDto[];

}

/**
 * 表单字段信息
 */
export interface FormFieldDto {

  /**
   * 字段ID
   */
  sheetFieldId: string | number;

  /**
   * 应用ID
   */
  sheetId: string | number;

  /**
   * 字段名
   */
  fieldName: string;

  /**
   * 简体中文
   */
  chineseName: string;

  /**
   * 字段类型
   */
  fieldType: number;

  /**
   * 数据源ID
   */
  dataSourceId: string | number;

  /**
   * 数据源类型
   */
  dataSourceType: number;

  /**
   * 字段数据源
   */
  sourceList: SearchDataSourceDto[];

  /**
   * 表单排序
   */
  formSort: number;

  /**
   * 表单是否启用
   */
  formStatus: string;

  /**
   * 表单是否显示
   */
  showForm: string;

  /**
   * 展示方式
   */
  showType: number;

  /**
   * 字段分组
   */
  fieldGroup: string;

  /**
   * 字段提示
   */
  fieldTip: string;

  /**
   * 是否授予，使用字典
   */
  isAuth: string;

  /**
   * 是否隐藏，使用字典
   */
  isHidden: string | number;

  /**
   * 是否编辑，是否用字典
   */
  isEdit: string;
}

/**
 * 表单校验
 */
export interface FormCheckDto {

  /**
   * 表单ID
   */
  formId: string | number;

  /**
   * 校验字段
   */
  fieldList: FormCheckFieldDto[];

}

/**
 * 表单校验字段信息
 */
export interface FormCheckFieldDto {

  /**
   * 字段名称
   */
  fieldName: string;

  /**
   * 校验规则
   */
  checkRuleList: SheetFormCheckVO[];

}

export interface FormDataDto extends BaseEntity {

  /**
   * 表单ID
   */
  formId?: string | number;

  /**
   * 字段值
   * key: 字段
   * value: 值
   */
  fieldValue?: any;

  /**
   * 下拉字段选择数据
   */
  selectList?: SheetSelectVO[];

  /**
   * 附件信息
   */
  formAttachmentList?: SheetFormAttachmentVO[];

}

